電腦編程的轉化能力 你也可以為文言文編程!
教育專業 專家分享 教育傳媒 電腦編程 文言文 Java 物件導向程式語言 Hello World 編程 文學編程是近年學界的熱門話題, 我們一般都會選擇學習C 語言、Java 或 Python等常用的物件導向程式語言(Object-oriented programming)。最近,國內有一位名為Lingdong Huang 的軟件工程師,開發了一種以文言文編寫的編程語言,一夜間成為網絡熱話!文言文程式語言讓編程課變得優雅,同時亦可考驗一下我們在編程語言之間的轉化能力。
首先,讓我們先看看Hello World寫法:
吾有一數。曰三。名之曰「甲」。為是「甲」遍。 吾有一言。曰「問天地好在。」。書之。云云。
當我們將它翻譯為JavaScript代碼:
var n = 3;for (var i = 0; i < n; i++) { console.log(" 問天地好在。");}
其輸出是:
問天地好在。問天地好在。問天地好在。
Hello World寫法不難明白,至於其他程式碼,大家又看得明白嗎?
| 文言文編程 | JavaScript | 
| 吾有一數。曰三。名之曰「甲」。 | var a = 3; | 
| 吾有一爻。曰陰。名之曰「乙」。 | var b = false; | 
| 吾有一列。名之曰「丙」。 | var c = []; | 
| 加一以二。 | 1+2 | 
| 除十以三。所餘幾何。 | 10%3 | 

以下是以文言文編寫的「乘算口訣」,大家看看當中的語法是否與中國語文科所學的「之」、「乎」、「者」、「也」同出一轍呢?

如果大家細心看看編碼,不難發現「若」其實代表着if,「若非」代表else if。不過在文言文中,我們不會用括號來代表迴圈的運算範圍,反之我們會在結尾寫上「也」、「云云」等作結。如果大家想知道上述文言文編碼的輸出和有關編碼的Javascript翻譯本,可掃描右方QRCode了解詳情。
這個文言文編程雖有別於我們在常用的Pascal、C、Java、JavaScript或Python,但背後基本的邏輯推理架構與演算法其實是共通的,因此我們若精通一種程式語言後,學習另一個程式語言的難度通常不會太高。當然,若在課程上教授尚未精通任何一個程式語言的同學,再加上文言文,似乎老師要再努力一點了!
梅志文
香港電腦教育學會



 
  
  
                 
                
 
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                         
            
                        355f1d61759d692d861c32b33492f2b0c6f.jpg) 
        354ad05bf928c9caa7d653a75894119cf3e.jpg) 
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
        216a56192030fb8aa305b00212834a154a9.jpg) 
        2158e0722f5379f1ca9b685278d808b1e4b.jpg)